#!/bin/bash

#Script DetectaV5 del TP-Grupo 9 Sistemas Operativos - FIUBA
#
#Autor: Federico Piechotka 92126


function rechazarArchivo
{
	exec ./MoverV5.sh -o "$ARRIDIR/$2" -d "$RECHDIR" &

	#Grabo en log
	exec ./LoguearV5.sh -c "DetectaV5" -m "Archivo rechazado: $1" -t I &
	wait $!
}


#***********************************************************************
#				DetectaV5
#***********************************************************************


Nombre='DetectaV5.sh'
if ps | grep -v $$ | grep $Nombre  > /dev/null
then
	echo 'Ya hay otra instancia de DetectaV5 corriendo'
	exit 0 
fi

yaFueInicializado=1
#yaFueInicializado=`echo "$PATH"|grep "$BINDIR" -c`
if ! test $yaFueInicializado -gt 0
then
	echo 'El ambiente no fue inicializado'
	exit 0 
fi

while true
do 
	if [ "$(ls -A $ARRIDIR)" ]
	then
		#Arridir no esta vacio
		for file in `ls $ARRIDIR | sed 's/^.*\/\([^\/]*\)$/\1/'`
		do	
			#Chequeo las condiciones pedidas para el nombre de los archivos
			tipo=`file -ib "$ARRIDIR/$file" | grep 'text/plain'`
			if [ -z "$tipo" ]
			then
				MSG="Tipo de archivo invalido"
				rechazarArchivo "$MSG" "$file"
				continue
			fi

			NombreArchivo=`echo "$file" | grep '.*_[0-9]\{4\}-[01][0-9]-[0-3][0-9]'`
			if [ -z "$NombreArchivo" ]
			then
				MSG="Nombre del archivo con formato invalido"
				rechazarArchivo "$MSG" "$file"
				continue
			fi

			SisId=`echo "$file" | sed 's/^\(.*\)_[^_]*$/\1/'`
			if [ ! `cut $MAEDIR/sistemas -f1 -d,  | grep $SisId` ]
			then
				MSG="Sistema inexistente"
				rechazarArchivo "$MSG" "$file"
				continue
			fi
			Fecha=$(date -d `echo "$file" | sed 's/^.*_\([0-9]\{4\}-[01][0-9]-[0-3][0-9]\).*$/\1/'` 2> /dev/null)
			if [ -z "$Fecha" ]
			then
				MSG="Fecha invalida"
				rechazarArchivo "$MSG" "$file"
				continue
			fi

			if [ `date --date "$Fecha" +%s` -gt `date +%s` ]
			then
				MSG="Fecha posterior a la fecha actual"
				rechazarArchivo "$MSG" "$file"
				continue
			fi
			
			FECHA_ALTA=`cat "$MAEDIR/sistemas" | grep "^$SisId," | cut -f3 -d, `
			FECHA_BAJA=`cat "$MAEDIR/sistemas" | grep "^$SisId," | cut -f4 -d, `
			if [ ! -z "$FECHA_BAJA" ] 
			then 
				if [ `date --date "$Fecha" +%s` -gt `date --date "$FECHA_BAJA" +%s` ]
				then
					MSG="Fecha posterior a la fecha de baja"
					rechazarArchivo "$MSG" "$file"
					continue
				fi
			fi

			if [ `date --date "$Fecha" +%s` -lt `date --date "$FECHA_ALTA" +%s` ]
			then
				MSG="Fecha anterior a la fecha de alta"
				rechazarArchivo "$MSG" "$file"
				continue
			fi

			exec ./MoverV5.sh -o "$ARRIDIR/$file" -d "$ACEPDIR" &
			wait $!

			exec ./LoguearV5.sh -c "DetectaV5" -m "Archivo aceptado movido con exito" -t I &
			wait $!
		done
	fi
	
	#Chequeo si hay archivos aceptados en ACEPDIR
	if [ "$(ls -A $ACEPDIR)" ]
	then
		Nom='BuscarV5'
		if ! ps | grep $Nom  > /dev/null
		then
			#No hay una instancia de BuscarV5 corriendo, ejecuto BuscarV5
			nohup  ./BuscarV5.sh >& /dev/null &
			PID=`ps | grep -v grep | grep 'BuscarV5' | cut -f1 -d\ `
			if [ -z "$PID" ]
			then
				echo "No se pudo ejecutar BuscarV5"
			else
				echo "BuscarV5 ejecutandose. ProcessId: $PID"
			fi
		fi
	fi

	sleep 20s
done


